Integración de Universal Robot (UR) vía TCP/IP
Para integrar el Universal Robot (UR) con el sistema de cámaras, ambos dispositivos deben estar conectados a la misma red local. La comunicación se establece mediante sockets TCP/IP; no se requiere ninguna activación adicional más allá de asegurar que ambos dispositivos compartan la misma red.
En esta configuración, la comunicación funciona como una solicitud y respuesta entre el robot y la cámara. La cámara actúa como servidor, y el robot funciona como cliente.
Flujo de Comunicación Típico
-
Abrir un socket desde el robot.
-
Enviar información desde el robot a la cámara.
-
La cámara lee la información y la traduce al formato requerido (p. ej., cadena, ASCII, byte).
-
La cámara realiza una función usando esa información y devuelve una respuesta a través de TCP.
-
El robot espera la respuesta TCP. Si no se recibe ninguna respuesta dentro de un par de segundos, el robot continuará su flujo sin la respuesta.
Se recomienda añadir una condición para confirmar que se devuelve información.
- El robot cierra la comunicación del socket.
Configuración de Red y Cortafuegos
Configuración de Red
- Asegúrese de que tanto el robot UR como la cámara estén conectados a la misma red local.
- Asigne direcciones IP dentro de la misma subred para facilitar la comunicación.
Configuración del cortafuegos
- Configure reglas de cortafuegos en ambos dispositivos para permitir la comunicación TCP/IP a través de los puertos designados.
- Verifique que no existan políticas de red que bloqueen la comunicación requerida.
URScript y Programación de Sockets - UR
Formatos de Datos
- La comunicación puede utilizar varios formatos de datos, como cadenas, ASCII o bytes.
- Asegúrese de que ambos dispositivos acuerden el formato de datos para evitar malentendidos.
Funciones URScript para la Comunicación de Sockets
socket_open(address, port, "socket_name"): Abre una conexión de socket a la dirección y puerto especificados.socket_send_string("message", "socket_name"): Envía un mensaje de cadena a través del socket.socket_send_byte(value, "socket_name"): Envía un valor de byte a través del socket.socket_read_string("socket_name"): Lee un mensaje de cadena desde el socket.socket_read_ascii_float(number, "socket_name"): Lee un mensaje ASCII de punto flotante desde el socket.socket_read_byte("socket_name"): Lee un valor de byte desde el socket.socket_close("socket_name"): Cierra la conexión del socket.
# Open socket connection to the camera server
socket_open("192.168.0.2", 3000, "camera_socket")
# Send a string message
socket_send_string("Request Data", "camera_socket")
# Alternatively, send a byte value
socket_send_byte(42, "camera_socket") # Sends the byte value 42
# Read the response as a string
response = socket_read_string("camera_socket")
# Read the response as a byte
response_byte = socket_read_byte("camera_socket")
# Close the socket connection
socket_close("camera_socket")
Configuración como Servidor TCP/IP - OV80i
Configuración del Servidor
- Configure la cámara para escuchar conexiones TCP entrantes en un puerto específico (p. ej., 3000).
- Asegúrese de que la dirección IP de la cámara sea estática o sea conocida por el robot para una comunicación consistente.
Análisis de Datos
- Implemente la lógica en la cámara para leer los datos entrantes del robot.
- Traduzca y procese los datos conforme sea necesario para las funciones de la cámara.
- Prepare y envíe la respuesta adecuada de vuelta al robot.
Lógica de Node-RED para la Integración del UR Robot
Para integrar el Universal Robot (UR) con su sistema mediante Node-RED, puede crear un flujo sencillo que procese los mensajes TCP entrantes, realice acciones basadas en los datos recibidos y responda al robot si es necesario.
Flujos de ejemplo
A continuación, un ejemplo de flujo para clasificación, en el que la cámara verificará una condición completa de Pass/Fail de la pieza tras un disparador, y enviará la respuesta de vuelta al robot.

Flujo 1:
- TCP IN: Abre un servidor TCP en Node-RED en el puerto 30000.
- Function 1 (Reads UR): Convierte los datos entrantes del robot UR a una cadena. Para que este flujo funcione, el UR debe enviar la cadena "Trigger".
- Switch: Si la cadena es "Trigger", el flujo continúa; si es otra cosa, el flujo se detiene y el robot UR experimentará un time-out.
- HTTP Request: Envía una solicitud a un endpoint (API Trigger) para activar el disparador de la cámara.
- Function 2 (Read Data): Recupera datos de la memoria global (1 o 0) y los formatea correctamente para su lectura ASCII en el robot UR.
- TCP Response: Envía la información de vuelta al robot.
Flujo 2:
- Trigger Command: Este flujo comienza con el comando de disparo.
- All Block Outputs: Genera información de la última imagen tomada (activada en el Flujo 1).
- Classification Block Logic: Configura las condiciones para cada ROI (Region of Interest) para determinar el estado Pass o Fail. (Haga clic en el bloque para configurarlo.)
- Function 3 (Information Setup): Convierte la condición Pass/Fail en 1 o 0 y la guarda en la memoria global para facilitar la traducción al UR robot.
Consideraciones
- Continuidad del flujo: Asegúrese de que todos los nodos que procesan los datos entrantes estén conectados secuencialmente en el mismo flujo. Si el flujo se divide en rutas paralelas, la Respuesta TCP puede no funcionar correctamente.
- Escenario sin Respuesta: Si no se necesita respuesta, puede omitir el nodo de Respuesta TCP. El robot debe estar configurado para manejar casos en los que no se reciba una respuesta dentro de un tiempo de espera determinado.
Manejo de Errores y Robustez
Time-outs y Reintentos
- Implemente timeouts para operaciones de socket para evitar que el robot espere indefinidamente.
- Incluya mecanismos de reintento en caso de problemas temporales de red.